home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / tool / rendezi / rendezi.bas next >
BASIC Source File  |  1995-08-18  |  20KB  |  565 lines

  1. 1000 ' save "rendezi.bas",a
  2. 1100 DIM ARGVS$(10)   '読み出すパラメータの文字列
  3. 1200 GOSUB *パラメタリード
  4. 1300 IF PARA=2 THEN DLL=300*1024 ELSE DLL=0
  5. 1400 IF PARA=1 THEN WRK=100*1024 ELSE WRK=30*1024
  6. 1500 CLEAR,,512,(FRE(4)-WRK-DLL),,DLL
  7. 1600 ON ERROR GOTO *エラー処理
  8. 1700 VER$="V3.0"
  9. 1800 PRE_IN=2 : '事前取り込みコマ数の初期値
  10. 1900 GOSUB *パラメタリード
  11. 2000 GOSUB *初期化
  12. 2100 'GOSUB *音声ON
  13. 2200 *LOOP1
  14. 2300   GOSUB *メニュー
  15. 2400  *LOOP2
  16. 2500   IF IN=2 THEN
  17. 2600       X1=0:X2=159:Y1=0:Y2=119
  18. 2700       M=(X2-X1+1)*(Y2-Y1+1)
  19. 2800       NO_WORK=INT(MEM_MAX&/M/2)
  20. 2900       IF NO_WORK=0 THEN GOSUB *使用メモリ指定 :GOTO *LOOP2
  21. 3000   ENDIF
  22. 3100   GOSUB *取り込み枚数調整
  23. 3200   IF IN=3 THEN
  24. 3300       GOSUB *読み込み_1
  25. 3400       IF NO=0 THEN GOSUB *使用メモリ指定 :GOTO *LOOP2
  26. 3500       DIM A1%(M*NO)
  27. 3600       GOSUB *読み込み_2
  28. 3700       FOR I=6 TO 9 : KEY(I) ON : NEXT I : KEY(1) ON
  29. 3800       GOSUB *再生
  30. 3900   ELSE
  31. 4000       IF IN=1 THEN
  32. 4100           GOSUB *領域設定1
  33. 4200           GOSUB *領域設定2
  34. 4300       ENDIF
  35. 4400       IF NO=0 THEN GOSUB *使用メモリ指定 :GOTO *LOOP2
  36. 4500       DIM A1%(M*NO)
  37. 4600       GOSUB *音声ON
  38. 4700       GOSUB *録画
  39. 4800       GOSUB *音声OFF
  40. 4900       FOR I=6 TO 9 : KEY(I) ON : NEXT I : KEY(1) ON
  41. 5000       GOSUB *再生
  42. 5100       GOSUB *確認
  43. 5200       IF Y_N_FLAG=1 THEN *D_ERASE
  44. 5300       IF Y_N_FLAG=0 THEN
  45. 5400           GOSUB *保存
  46. 5500       ELSE
  47. 5600           GOSUB *コマ送り
  48. 5700       ENDIF
  49. 5800   ENDIF
  50. 5900  *D_ERASE
  51. 6000   ERASE A1%
  52. 6100   GOTO *LOOP1
  53. 6200 '
  54. 6300 *初期化
  55. 6400 ' keisiki:画像圧縮形式/0:TIFF圧縮なし/1:TIFF圧縮あり/2:JPEGデータ形式
  56. 6500  KEISIKI=PARA
  57. 6600  IF KEISIKI=2 THEN
  58. 6700      COMP$=".jpg" : COMP_MES$="JPEG"
  59. 6800  ELSE
  60. 6900      COMP$=".tif"
  61. 7000      IF KEISIKI=1 THEN
  62. 7100         COMP_MES$="圧縮TIFF"
  63. 7200      ELSE
  64. 7300         COMP_MES$="標準TIFF"
  65. 7400      ENDIF
  66. 7500  ENDIF
  67. 7600  SCREEN@ 1
  68. 7700  WIDTH 80,20
  69. 7800  CLS:X1=0:Y1=0:X2=159:Y2=127:COLOR 4:IN=1
  70. 7900  IF PARA=2 THEN DLL=300*1024 ELSE DLL=0
  71. 8000  IF PARA=1 THEN WRK=100*1024 ELSE WRK=30*1024
  72. 8100  F_MEM&=FRE(4)-WRK-DLL
  73. 8200  RETURN
  74. 8300 *BOX
  75. 8400  XX1=BX*4:XX2=XX1+YOKO*4:YY1=BY*12:YY2=YY1+TATE*12
  76. 8500  LINE (XX1,YY1-2)-(XX2,YY2-2),PSET,COL,BF
  77. 8600  RETURN
  78. 8700 *メニュー
  79. 8800  CLS
  80. 8900  FOR I=6 TO 9 : KEY(I) OFF : NEXT I : GOSUB *標準解像度
  81. 9000  *MENU_LOOP
  82. 9100   LOCATE 20, 4:PRINT USING "  連でじ &    &/########## byte free";VER$,F_MEM&
  83. 9200 ' BX=20:BY=4:YOKO=36:TATE=1:COL=4:GOSUB *BOX
  84. 9300   LOCATE 20, 5:PRINT " 〔メニュー〕  ";
  85. 9400   PRINT USING "[ファイル形式:&      &]";COMP_MES$
  86. 9500   LOCATE 20, 6:PRINT "(1)録画&再生&保存"
  87. 9600   LOCATE 20, 7:PRINT "(2)録画&再生&保存(縮小モード)"
  88. 9700   LOCATE 20, 8:PRINT "(3)読み込み&再生"
  89. 9800   LOCATE 20, 9:PRINT "(4)終了"
  90. 9900   BX=20:BY=4:YOKO=36:TATE=7:COL=1:GOSUB *BOX
  91. 10000   BX=20:BY=5+IN:YOKO=36:TATE=1:COL=7:GOSUB *BOX
  92. 10100   K$=INPUT$(1):K=ASC(K$)
  93. 10200   IF K=13 THEN *LOOP_EXIT
  94. 10300   IF K=30 THEN IN=IN-1:IF IN<1 THEN IN=1
  95. 10400   IF K=31 THEN IN=IN+1:IF IN>4 THEN IN=4
  96. 10500   GOTO *MENU_LOOP
  97. 10600  *LOOP_EXIT
  98. 10700   ON IN GOSUB *録画設定,*録画設定,*読み込み設定,*終わり
  99. 10800   ON KEY(6) GOSUB *ウエイトDOWN : ON KEY(7) GOSUB *ウエイトUP
  100. 10900   ON KEY(8) GOSUB *解像度DOWN : ON KEY(9) GOSUB *解像度UP
  101. 11000   ON KEY(1) GOSUB *再生HELP
  102. 11100  RETURN
  103. 11200 *終わり
  104. 11300  KEY(10) OFF : KEY(9) OFF : KEY(8) OFF
  105. 11400  CLS:LOCATE 24,7:PRINT "どうもご利用ありがとうございました"
  106. 11500      LOCATE 24,8:PRINT "[ NIFTY-Serve ID:HAD01045 (SAINT) ]"
  107. 11600      LOCATE 24,9:PRINT "[                PED00201 (JINX ) ]"
  108. 11700  BX=24:BY=7:YOKO=35:TATE=3:COL=1:GOSUB *BOX
  109. 11800  WAIT 300
  110. 11900  SYSTEM
  111. 12000  END
  112. 12100 *録画設定
  113. 12200  GOSUB *読み込み設定
  114. 12300  LOCATE 20,17:PRINT "録画領域設定用の画像をデジタイズします"
  115. 12400  LOCATE 20,18:PRINT "適当なところで[RETURN]を押して下さい"
  116. 12500  BX=20:BY=17:YOKO=38:TATE=2:COL=1:GOSUB *BOX
  117. 12600  WAIT 100
  118. 12700  RETURN
  119. 12800 *読み込み設定
  120. 12900  IF IN=3 THEN MES$="読込" ELSE MES$="保存"
  121. 13000  LOCATE 27,12:PRINT "〔次の項目を入力してください〕"
  122. 13100  LOCATE 15,13:PRINT USING "  &  &ディレクトリ      :";MES$
  123. 13200  LOCATE 15,14:PRINT USING "  &  &ファイル名(5モジマデ):";MES$
  124. 13300  LOCATE 15,15:PRINT "  デジタイズウェイト     :"
  125. 13400  LOCATE 15,16:PRINT "  取り込み枚数(0:最大)   :"
  126. 13500    BX=15:BY=12:YOKO=50:TATE=5:COL=1:GOSUB *BOX
  127. 13600    BX=15:BY=13:YOKO=50:TATE=1:COL=7:GOSUB *BOX
  128. 13700 *ENT_DIR
  129. 13800  DUMMY$=DIR$
  130. 13900  LOCATE 45,13:PRINT CHR$(&H1B)+"T";
  131. 14000  LOCATE 45,13:PRINT DUMMY$;
  132. 14100  LOCATE 45,13:LINE INPUT "",DIR$
  133. 14200  IF DIR$="" THEN
  134. 14300      IF DUMMY$<>""THEN 
  135. 14400          DIR$=DUMMY$
  136. 14500      ELSE
  137. 14600          GOTO *ENT_DIR
  138. 14700      ENDIF
  139. 14800  ELSE
  140. 14900      IF RIGHT$(DIR$,1)<>"\" THEN
  141. 15000           DIR$=DIR$+"\"
  142. 15100      ENDIF
  143. 15200  ENDIF
  144. 15300  OPEN DIR$+")RENDEZ(.TMP" FOR OUTPUT AS #1
  145. 15400  CLOSE #1
  146. 15500  KILL DIR$+")RENDEZ(.TMP"
  147. 15600    BX=15:BY=13:YOKO=50:TATE=1:COL=1:GOSUB *BOX
  148. 15700    BX=15:BY=14:YOKO=50:TATE=1:COL=7:GOSUB *BOX
  149. 15800  DUMMY$=F$
  150. 15900  LOCATE 45,14:PRINT DUMMY$;
  151. 16000  LOCATE 45,14:LINE INPUT "",F$
  152. 16100  IF F$="" THEN
  153. 16200      IF DUMMY$<>"" THEN
  154. 16300          F$=DUMMY$
  155. 16400      ELSE
  156. 16500          GOTO 16000
  157. 16600      ENDIF
  158. 16700  ENDIF
  159. 16800  IF ERR=67 THEN RETURN
  160. 16900    BX=15:BY=14:YOKO=50:TATE=1:COL=1:GOSUB *BOX
  161. 17000    BX=15:BY=15:YOKO=50:TATE=1:COL=7:GOSUB *BOX
  162. 17100  DUMMY$=WA$
  163. 17200  LOCATE 45,15:PRINT DUMMY$;
  164. 17300  LOCATE 45,15:LINE INPUT "",WA$
  165. 17400  IF WA$="" AND DUMMY$<>"" THEN WA$=DUMMY$
  166. 17500  WA=VAL(WA$)
  167. 17600    BX=15:BY=15:YOKO=50:TATE=1:COL=1:GOSUB *BOX
  168. 17700    BX=15:BY=16:YOKO=50:TATE=1:COL=7:GOSUB *BOX
  169. 17800  DUMMY$=MAX$
  170. 17900  LOCATE 45,16:PRINT DUMMY$;
  171. 18000  LOCATE 45,16:LINE INPUT "",MAX$
  172. 18100  IF MAX$="" AND DUMMY$<>"" THEN MAX$=DUMMY$
  173. 18200    IF MAX$="M" OR MAX$="m" THEN NO_MAX=0:GOTO *使用メモリ指定
  174. 18300    NO_MAX=VAL(MAX$) : MEM_MAX&=F_MEM&
  175. 18400  RETURN
  176. 18500 *使用メモリ指定
  177. 18600  LOCATE 15,16:PRINT " 取り込みメモリ量(0:最大) :"
  178. 18700    BX=15:BY=16:YOKO=50:TATE=1:COL=7:GOSUB *BOX
  179. 18800  LOCATE 45,16:PRINT CHR$(&H1B)+"T";
  180. 18900  DUMMY$=M_MAX$
  181. 19000  LOCATE 45,16:PRINT DUMMY$;
  182. 19100  LOCATE 45,16:LINE INPUT "",M_MAX$
  183. 19200  IF M_MAX$="" AND DUMMY$<>"" THEN M_MAX$=DUMMY$
  184. 19300    MEM_MAX&=VAL(M_MAX$)
  185. 19400    IF MEM_MAX&=0 OR MEM_MAX&>F_MEM& THEN MEM_MAX&=F_MEM&
  186. 19500  RETURN
  187. 19600 *取り込み枚数調整
  188. 19700  IF NO_MAX=0 OR NO_MAX>=NO_WORK THEN
  189. 19800      NO=NO_WORK
  190. 19900  ELSE
  191. 20000      NO=NO_MAX
  192. 20100  ENDIF
  193. 20200  RETURN
  194. 20300 *領域設定1
  195. 20400  SINPUT
  196. 20500  SIMPOSE OFF
  197. 20600 *領域設定1_COM
  198. 20700  LINE (X1,Y1)-(X2,Y2),XOR,4,B
  199. 20800  M=(X2-X1+1)*(Y2-Y1+1)
  200. 20900  NO_WORK=INT(MEM_MAX&/M/2):CLS 4
  201. 21000  GOSUB *取り込み枚数調整
  202. 21100  IF IN=1 THEN DISP$="録画面積"
  203. 21200  IF IN=2 THEN DISP$="画像大きさ"
  204. 21300  LOCATE 0,18:PRINT "カーソルキーで";DISP$;"を調整して下さい";
  205. 21400  IF IN=1 THEN LOCATE 0,19:PRINT "録画画面枚数="+STR$(NO)+"枚まで可能です";
  206. 21500  K$=INKEY$:IF K$="" THEN 21500 ELSE K=ASC(K$)
  207. 21600  LINE (X1,Y1)-(X2,Y2),XOR,4,B
  208. 21700  IF K=13 THEN RETURN
  209. 21800  IF K=29 THEN X2=X2-8 : IF X2<X1  THEN X2=X2+8
  210. 21900  IF K=28 THEN X2=X2+8 : IF X2>319 THEN X2=X2-8
  211. 22000  IF K=30 THEN Y2=Y2-8 : IF Y2<Y1  THEN Y2=Y2+8
  212. 22100  IF K=31 THEN Y2=Y2+8 : IF Y2>239 THEN Y2=Y2-8
  213. 22200  GOTO *領域設定1_COM
  214. 22300 *領域設定2
  215. 22400  LINE (X1,Y1)-(X2,Y2),XOR,4,B
  216. 22500  LOCATE 0,18:PRINT "カーソルキーで録画位置を調整して下さい";
  217. 22600  LOCATE 0,19:PRINT "録画画面枚数="+STR$(NO)+"枚まで可能です";
  218. 22700  WHILE INKEY$<>"":WEND
  219. 22800  K$=INKEY$:IF K$="" THEN 22800 ELSE K=ASC(K$)
  220. 22900  LINE (X1,Y1)-(X2,Y2),XOR,4,B
  221. 23000  IF K=27 THEN RETURN 4100
  222. 23100  IF K=29 THEN X1=X1-1:X2=X2-1 : IF X1<0   THEN X1=X1+1:X2=X2+1
  223. 23200  IF K=28 THEN X1=X1+1:X2=X2+1 : IF X2>319 THEN X1=X1-1:X2=X2-1
  224. 23300  IF K=30 THEN Y1=Y1-1:Y2=Y2-1 : IF Y1<0   THEN Y1=Y1+1:Y2=Y2+1
  225. 23400  IF K=31 THEN Y1=Y1+1:Y2=Y2+1 : IF Y2>239 THEN Y1=Y1-1:Y2=Y2-1
  226. 23500  IF K<>13 THEN 22400
  227. 23600  CLS 4:LOCATE 20,17:PRINT "次に録画を開始します"
  228. 23700  LOCATE 20,18:PRINT "適当なところで[RETURN]を押して下さい"
  229. 23800  BX=20:BY=17:YOKO=38:TATE=2:COL=1:GOSUB *BOX
  230. 23900  WAIT 100
  231. 24000  RETURN
  232. 24100 *録画
  233. 24200  WHILE INKEY$<>"":WEND:SIMPOSE 3
  234. 24300  IF IN=2 THEN
  235. 24400      OUT &H440,27,1
  236. 24500      OUT &H442,&H0017,2
  237. 24600  ENDIF
  238. 24700  LOOP=1 : LOOP_FLAG=0 : FIN_FLAG=0
  239. 24800  WHILE LOOP_FLAG=0
  240. 24900      K_IN$=INKEY$
  241. 25000      GET@A (X1,Y1)-(X2,Y2),A1%,(M*(LOOP-1))
  242. 25100      IF WA THEN WAIT WA
  243. 25200      IF K_IN$=CHR$(&H1B) THEN LOOP_FLAG=-1
  244. 25300      IF K_IN$=CHR$(&H0D) THEN LOOP_FLAG=99
  245. 25400      LOOP=LOOP+1
  246. 25500      IF LOOP>NO THEN LOOP=1 : FIN_FLAG=-1
  247. 25600  WEND
  248. 25700  IF LOOP_FLAG=-1 THEN RETURN *D_ERASE
  249. 25800  'stage 1 ----------
  250. 25900  LOOP_START1=LOOP
  251. 26000  IF FIN_FLAG AND LOOP_START1=<PRE_IN THEN
  252. 26100      LOOP_END1=NO-PRE_IN+LOOP_START1-1
  253. 26200  ELSE
  254. 26300      LOOP_END1=NO
  255. 26400  ENDIF
  256. 26500  FOR LOOP=LOOP_START1 TO LOOP_END1
  257. 26600      GET@A (X1,Y1)-(X2,Y2),A1%,(M*(LOOP-1))
  258. 26700      IF WA THEN WAIT WA
  259. 26800  NEXT LOOP
  260. 26900  'stage 2 ----------
  261. 27000  IF LOOP_START1>PRE_IN+1 THEN
  262. 27100      LOOP_START2=1
  263. 27200      LOOP_END2=LOOP_START1-PRE_IN-1
  264. 27300      LOOP_START0=LOOP_END2+1
  265. 27400      IF LOOP_START0>NO THEN LOOP_START0=1
  266. 27500      FOR LOOP=LOOP_START2 TO LOOP_END2
  267. 27600          GET@A (0,0)-(159,119),A1%,(M*(LOOP-1))
  268. 27700          IF WA THEN WAIT WA
  269. 27800      NEXT LOOP
  270. 27900  ENDIF
  271. 28000  RETURN
  272. 28100 '
  273. 28200 *コマ送り
  274. 28300  SIMPOSE OFF : CLS : LOOP=1
  275. 28400 *コマLOOP
  276. 28500  GOSUB *ヒトコマ再生
  277. 28600  A$=INKEY$ : WHILE A$="" : A$=INKEY$ :WEND
  278. 28700  IF A$=CHR$(&H1B) THEN RETURN
  279. 28800  IF A$=CHR$(&H0D) THEN LOOP1=LOOP : GOSUB *ヒトコマ保存
  280. 28900  IF A$=CHR$(&H1F) THEN LOOP=LOOP+1
  281. 29000  IF A$=CHR$(&H1E) THEN LOOP=LOOP-1
  282. 29100  IF LOOP=0 THEN LOOP=NO
  283. 29200  IF LOOP>NO THEN LOOP=1
  284. 29300  GOTO *コマLOOP
  285. 29400 *ヒトコマ再生
  286. 29500  LOCATE 68,24 : PRINT USING "#####/#####";LOOP,NO;
  287. 29600  X_OFST=INT(319/(倍率+1-(倍率=0))-(X1+X2)/2)
  288. 29700  Y_OFST=INT(239/(倍率+1-(倍率=0))-(Y1+Y2)/2)
  289. 29800  PUT@A (X1+X_OFST,Y1+Y_OFST)-(X2+X_OFST,Y2+Y_OFST),A1%,,,,,(M*(LOOP-1))
  290. 29900  RETURN
  291. 30000 *コマ送り2
  292. 30100  'SIMPOSE OFF : CLS : LOOP=1
  293. 30200 *コマLOOP2
  294. 30300  GOSUB *ヒトコマ再生
  295. 30400  A$=INKEY$ : WHILE A$="" : A$=INKEY$ :WEND
  296. 30500  IF A$=CHR$(&H1B) THEN LOCATE 68,24 : PRINT "           ";: RETURN
  297. 30600  IF A$=CHR$(&H1F) THEN LOOP=LOOP+1
  298. 30700  IF A$=CHR$(&H1E) THEN LOOP=LOOP-1
  299. 30800  IF LOOP=0 THEN LOOP=NO
  300. 30900  IF LOOP>NO THEN LOOP=1
  301. 31000  GOTO *コマLOOP2
  302. 31100 *再生
  303. 31200  X_OFST=INT(319/2-(X1+X2)/2) : Y_OFST=INT(239/2-(Y1+Y2)/2)
  304. 31300  SIMPOSE OFF:CLS:WHILE INKEY$<>"":WEND
  305. 31400  CHECK$=CHR$(13)+CHR$(27)+CHR$(28)+CHR$(29)+CHR$(30)+CHR$(31)+CHR$(32)+CHR$(9)+CHR$(52)+CHR$(54)+CHR$(56)+CHR$(50)
  306. 31500  FOR LOOP=1 TO NO
  307. 31600      PUT@A (X1+X_OFST,Y1+Y_OFST)-(X2+X_OFST,Y2+Y_OFST),A1%,,,,,(M*(LOOP-1))
  308. 31700      K$=INKEY$:IF K$="" THEN 33400
  309. 31800      CHECK=INSTR(CHECK$,K$)
  310. 31900      IF CHECK=1 THEN RETURN
  311. 32000      IF CHECK=2 THEN
  312. 32100          IF IN MOD 2=1 THEN
  313. 32200              RETURN 4700
  314. 32300          ELSE
  315. 32400              IF IN MOD 2=0 THEN ERASE A1%:RETURN 2200
  316. 32500          ENDIF
  317. 32600      ENDIF
  318. 32700      IF CHECK=3 THEN GOSUB *ウエイトUP
  319. 32800      IF CHECK=4 THEN GOSUB *ウエイトDOWN
  320. 32900      IF CHECK=5 THEN GOSUB *解像度UP
  321. 33000      IF CHECK=6 THEN GOSUB *解像度DOWN
  322. 33100      IF CHECK=7 THEN GOSUB *PAUSE
  323. 33200      IF CHECK=8 THEN GOSUB *コマ送り2
  324. 33300      IF CHECK>8 AND CHECK<13 THEN GOSUB *スクロール
  325. 33400      IF WA THEN WAIT WA
  326. 33500  NEXT LOOP:GOTO 31500
  327. 33600 '
  328. 33700 *ヒトコマ保存
  329. 33800  LOOP_WORK=LOOP1-LOOP_START0+1
  330. 33900  IF LOOP_WORK<1 THEN LOOP_WORK=LOOP_WORK+NO
  331. 34000  NO$=RIGHT$("000"+MID$(STR$(LOOP_WORK),2),3)
  332. 34100  SAVE@ DIR$+F$+NO$+COMP$,(X1+X_OFST,Y1+Y_OFST)-(X2+X_OFST,Y2+Y_OFST),,KEISIKI
  333. 34200  RETURN
  334. 34300 *保存
  335. 34400  CLS
  336. 34500  FOR LOOP1=1 TO NO
  337. 34600      PUT@A (X1+X_OFST,Y1+Y_OFST)-(X2+X_OFST,Y2+Y_OFST),A1%,,,,,(M*(LOOP1-1))
  338. 34700      GOSUB *ヒトコマ保存
  339. 34800  NEXT LOOP1
  340. 34900  RETURN
  341. 35000 *読み込み_1
  342. 35100   CLS
  343. 35200   LOAD@ DIR$+F$+"001"+COMP$
  344. 35300   FILE$=DIR$+F$+"001"+COMP$
  345. 35400   IF COMP$=".tif" THEN GOSUB *TIFF_DOT ELSE GOSUB *JPEG_DOT
  346. 35500   X1=0:Y1=0:X2=XSIZE:Y2=YSIZE
  347. 35600   M=(X2-X1+1)*(Y2-Y1+1)
  348. 35700   NO=INT(MEM_MAX&/M/2):CLS 4
  349. 35800   RETURN
  350. 35900 *読み込み_2
  351. 36000   LOCATE 0,18:PRINT CHR$(&H1B)+"T";
  352. 36100   LOCATE 0,18:PRINT "画像ファイルを読み込み中です"
  353. 36200   FOR LOOP1=1 TO NO
  354. 36300       NO$=RIGHT$("000"+MID$(STR$(LOOP1),2),3)
  355. 36400       LOAD@ DIR$+F$+NO$+COMP$
  356. 36500       GET@A (X1,Y1)-(X2,Y2),A1%,(M*(LOOP1-1))
  357. 36600   NEXT LOOP1
  358. 36700   RETURN
  359. 36800 *パラメタリード
  360. 36900   DEF FNARGC& = PEEK(PEEK(VARPTR(SYSTEM,6) - 8,4),4)
  361. 37000   DEF FNARGV& = PEEK(PEEK(VARPTR(SYSTEM,6) - 8,4) - 4,4)
  362. 37100   ARGC& = FNARGC& : 'PRINT "パラメータ数",HEX$(ARGC&) ' argc
  363. 37200   ARGV& = FNARGV& : 'PRINT HEX$(ARGV&)  ' argvのアドレス
  364. 37300   IF ARGC& < 1 THEN PRINT "noting":END
  365. 37500   FOR I=1 TO ARGC&-1
  366. 37600       ARGVX& = PEEK((ARGV&+I*4),4)
  367. 37700       ARGVS$(I) = ""
  368. 37800       M& = 1
  369. 37900       WHILE (M& <> 0)
  370. 38000           M& = PEEK((ARGVX&),1)
  371. 38100           ARGVS$(I) = ARGVS$(I)+CHR$(M&) : ARGVX&=ARGVX&+1
  372. 38200       WEND
  373. 38300       NAM$=ARGVS$(I)
  374. 38400       IF LEN(NAM$)>2 AND LEFT$(NAM$,1)="/" THEN
  375. 38500           WORK=INSTR("EePp",MID$(NAM$,2,1))
  376. 38600           IF WORK=1 OR WORK=2 THEN PARA=VAL(MID$(NAM$,3))
  377. 38700           IF WORK=3 OR WORK=4 THEN PRE_IN=VAL(MID$(NAM$,3))
  378. 38800       ENDIF
  379. 38900  '     PRINT NAM$
  380. 39000   NEXT I
  381. 39100  ' PRINT USING "PARA=####   PRE__IN=####";PARA,PRE_IN : A$=INPUT$(1)
  382. 39200   RETURN
  383. 39300 *確認
  384. 39400   LOCATE 20,24:PRINT "保存しますか?< y / n / s >";
  385. 39500   A$=INPUT$(1) : A=INSTR("YyNnSs",A$)
  386. 39600   IF A=0 THEN BEEP : GOTO 39500
  387. 39700   Y_N_FLAG=(A-1) \ 2
  388. 39800   RETURN
  389. 39900 *ウエイトUP
  390. 40000   KEY(6) OFF
  391. 40100   WA=WA+1 : LOCATE 60,24:PRINT USING "WAIT=#####";WA;
  392. 40200   KEY(6) ON
  393. 40300   RETURN
  394. 40400 *ウエイトDOWN
  395. 40500   KEY(7) OFF
  396. 40600   WA=WA-1 : IF WA<0 THEN WA=0
  397. 40700   LOCATE 60,24:PRINT USING "WAIT=#####";WA;
  398. 40800   KEY(7) ON
  399. 40900   RETURN
  400. 41000 *標準解像度
  401. 41100   OUT &H440,27,1 : OUT &H442,17,2 : 倍率=1 : SCREEN@ 1,0
  402. 41200   RETURN
  403. 41300 *解像度DOWN
  404. 41400   KEY(8) OFF  : OUT &H440,17:OUT &H442,0,2
  405. 41500   YOKO_OFFSET=0 : TATE_OFFSET=0
  406. 41600   YOKO_OFFSET=0 : TATE_OFFSET=0
  407. 41700   倍率=倍率-1 : IF 倍率<0 THEN 倍率=0
  408. 41800   X_OFST=INT(319/(倍率+1-(倍率=0))-(X1+X2)/2)
  409. 41900   Y_OFST=INT(239/(倍率+1-(倍率=0))-(Y1+Y2)/2)
  410. 42000   CLS 5
  411. 42100   IF 倍率<>0 THEN
  412. 42200          SCREEN@ 1,0:OUT &H440,27,1 : OUT &H442,17*倍率,2
  413. 42300   ELSE
  414. 42400          SCREEN@ 1,1,(128,112)
  415. 42500   ENDIF
  416. 42600   KEY(8) ON
  417. 42700   RETURN
  418. 42800 *解像度UP
  419. 42900   YOKO_OFFSET=0 : TATE_OFFSET=0
  420. 43000   KEY(9) OFF  : OUT &H440,17:OUT &H442,0,2
  421. 43100   YOKO_OFFSET=0 : TATE_OFFSET=0
  422. 43200   倍率=倍率+1 : IF 倍率>3 THEN 倍率=3
  423. 43300   X_OFST=INT(319/(倍率+1-(倍率=0))-(X1+X2)/2)
  424. 43400   Y_OFST=INT(239/(倍率+1-(倍率=0))-(Y1+Y2)/2)
  425. 43500   CLS 5:SCREEN@ 1,0:OUT &H440,27,1 : OUT &H442,17*倍率,2
  426. 43600   KEY(9) ON
  427. 43700   RETURN
  428. 43800 *音声ON
  429. 43900   KEY(10) OFF
  430. 44000   OUT &H04E1,&H04
  431. 44100   OUT &H04E0,&HFF
  432. 44200   OUT &H04E1,&H05
  433. 44300   OUT &H04E0,&HFF
  434. 44400   ON KEY(10) GOSUB *音声OFF
  435. 44500   KEY(10) ON
  436. 44600   RETURN
  437. 44700 *音声OFF
  438. 44800   KEY(10) OFF
  439. 44900   OUT &H04E1,&H04
  440. 45000   OUT &H04E0,&H00
  441. 45100   OUT &H04E1,&H05
  442. 45200   OUT &H04E0,&H00
  443. 45300   ON KEY(10) GOSUB *音声ON
  444. 45400   KEY(10) ON
  445. 45500   RETURN
  446. 45600 *PAUSE
  447. 45700   LOCATE 70,24:PRINT  "PAUSE";
  448. 45800   IN$=INPUT$(1)
  449. 45900   LOCATE 70,24:PRINT  "     ";
  450. 46000   RETURN
  451. 46100 *スクロール
  452. 46200   WHILE INKEY$<>"":WEND
  453. 46300   YOKO_OFFSET=YOKO_OFFSET-(CHECK=9)*2+(CHECK=10)*2
  454. 46400   TATE_OFFSET=TATE_OFFSET-(CHECK=11)*2+(CHECK=12)*2
  455. 46500   OFFSET=TATE_OFFSET*256+YOKO_OFFSET
  456. 46600   OUT &H440,17:OUT &H442,OFFSET,2
  457. 46700   RETURN
  458. 46800 *再生HELP
  459. 46900   IF HELP_FLAG=0 THEN
  460. 47000       COLOR 14
  461. 47100       LOCATE 0,14:PRINT " 『連でじ再生HELP』  ";
  462. 47200       LOCATE 0,15:PRINT "ウェイト変更 [←]&[→]";
  463. 47300       LOCATE 0,16:PRINT "解像度変更  [↑]&[↓]";
  464. 47400       LOCATE 0,19:PRINT "スクロール [2][4][6][8]";
  465. 47500       LOCATE 0,17:PRINT "一時停止   [SPACE]";
  466. 47600       LOCATE 0,18:PRINT "コマ送り再生   [TAB] ";
  467. 47700       LOCATE 0,19:PRINT "スクロール [2][4][6][8]";
  468. 47800       HELP_FLAG=1:COLOR 4
  469. 47900   ELSE
  470. 48000       CLS 4:HELP_FLAG=0
  471. 48100   ENDIF
  472. 48200   RETURN
  473. 48300 *JPEG_DOT
  474. 48400 ' FILE$="ファイル名"
  475. 48500   OPEN "I",#1,FILE$
  476. 48600 '
  477. 48700 *JPEG_MARKER
  478. 48800   D$=""
  479. 48900   WHILE D$<>CHR$(&HFF):D$=INPUT$(1,1):WEND  'マーカーを探す
  480. 49000   MARK$=INPUT$(1,1)
  481. 49100   IF MARK$=CHR$(&HC0) THEN *SOF0          'Start Of Frame
  482. 49200   IF MARK$=CHR$(&HD8) THEN *JPEG_MARKER   'Start Of Image
  483. 49300 '
  484. 49400   SIZE=ASC(INPUT$(1,1))*256+ASC(INPUT$(1,1))-2
  485. 49500   FOR I=1 TO SIZE:D$=INPUT$(1,1):NEXT
  486. 49600   GOTO *JPEG_MARKER
  487. 49700 '
  488. 49800 *SOF0
  489. 49900   SIZE=ASC(INPUT$(1,1))*256+ASC(INPUT$(1,1))-2
  490. 50000   D$=INPUT$(1,1)
  491. 50100   YSIZE=ASC(INPUT$(1,1))*256+ASC(INPUT$(1,1))
  492. 50200   XSIZE=ASC(INPUT$(1,1))*256+ASC(INPUT$(1,1))
  493. 50300 '
  494. 50400   PRINT USING "画像の大きさ=(#### * ####)";XSIZE;YSIZE
  495. 50500 '
  496. 50600   CLOSE
  497. 50700   RETURN
  498. 50800 *TIFF_DOT
  499. 50900 ' FILE$="ファイル名"
  500. 51000   DEF FNGETC=ASC(INPUT$(1,1))
  501. 51100   DEF FNGETSHORT=FNGETC+FNGETC*256
  502. 51200   DEF FNGETLONG=FNGETSHORT+FNGETSHORT*65536
  503. 51300   OPEN "I",#1,FILE$
  504. 51400 *TIFF_MARKER
  505. 51500   A$=INPUT$(4,1)
  506. 51600   IF A$<>"II"+CHR$(&H2A)+CHR$(&H0) THEN PRINT "TIFFでない":GOTO 57200
  507. 51700   IFDPOS=FNGETLONG
  508. 51800   IF IFDPOS>8 THEN A$=INPUT$(IFDPOS-8,1)
  509. 51900   TAGNUM=FNGETSHORT
  510. 52000   FOR I=0 TO TAGNUM-1
  511. 52100      TAGID=FNGETSHORT
  512. 52200      TAGTYPE=FNGETSHORT
  513. 52300      TAGDATNUM=FNGETLONG
  514. 52400      TAGDAT=FNGETSHORT
  515. 52500      A=FNGETSHORT
  516. 52600      IF TAGID=&H100 THEN XSIZE=TAGDAT
  517. 52700      IF TAGID=&H101 THEN YSIZE=TAGDAT
  518. 52800      IF TAGID=&H102 THEN
  519. 52900         IF TAGTYPE=3 AND TAGDATNUM=1 THEN
  520. 53000            IF TAGDAT=1 THEN COLTYPE=2
  521. 53100            IF TAGDAT=4 THEN COLTYPE=16
  522. 53200            IF TAGDAT=8 THEN COLTYPE=256
  523. 53300            IF TAGDAT=16 THEN COLTYPE=32768
  524. 53400         ELSE
  525. 53500            IF TAGTYPE=3 AND TAGDATNUM=3 THEN COLTYPE=16770000
  526. 53600         ENDIF
  527. 53700      ENDIF
  528. 53800   NEXT
  529. 53900   PRINT USING "画像の大きさ=(#### * ####)";XSIZE;YSIZE
  530. 54000   PRINT USING "色数(########)";COLTYPE
  531. 54100   CLOSE
  532. 54200   RETURN
  533. 54300 *エラー処理
  534. 54400   IF ERL=34100 AND ERR=64 THEN KILL DIR$+F$+NO$+COMP$:RESUME 34100
  535. 54500   IF ERL=36400 THEN NO=LOOP1-1:RESUME 36700
  536. 54600   IF ERL=35200 AND ERR=63 THEN
  537. 54700      PRINT "指定ファイルが見つかりません"
  538. 54800      PRINT "何かキーを押してください"
  539. 54900      A$=INPUT$(1)
  540. 55000      GOSUB *読み込み設定 : CLS
  541. 55100      RESUME
  542. 55200   ENDIF
  543. 55300   IF ERR=67 THEN
  544. 55400      PRINT "ディスクに空き領域が無くなりました。"
  545. 55500      PRINT "<ESC>:中断   <SPACE>:保存先指定を変更"
  546. 55600      A$=INPUT$(1)
  547. 55700      IF A$=CHR$(&H1B) THEN RESUME 2200
  548. 55800      IF A$=" " THEN GOSUB *読み込み設定 : RESUME
  549. 55900   ENDIF
  550. 56000   IF ERL=15300 THEN BEEP:RESUME *ENT_DIR
  551. 56100   IF ERR=67 THEN
  552. 56200      LOCATE 0,0:PRINT "ディスクに空き領域が無くなりました。"
  553. 56300      PRINT "<ESC>:中断   <SPACE>:保存先指定を変更(残りのみ)"
  554. 56400      A$=INPUT$(1)
  555. 56500      IF A$=CHR$(&H1B) THEN CLS:RESUME 5900
  556. 56600      IF A$=" " THEN GOSUB *読み込み設定 : RESUME
  557. 56700   ENDIF
  558. 56800   OPEN "RNDZ_ERR.LOG" FOR APPEND AS #1
  559. 56900   PRINT #1,USING "&      & &      & ver.=&      & ERR=######## ERL=########";DATE$,TIME$,VER$,ERR,ERL
  560. 57000   CLOSE
  561. 57100   CLS
  562. 57200   ON ERROR GOTO 0
  563. 57300   PRINT USING "エラーです ERR=######## ERL=########";ERR,ERL
  564. 57400   STOP
  565.